A code example for converting to 32 bit little endian data is shown in Listing 5.
Listing 10 Converting to Little Endian
OSErr ConvertToLittleEndian(Ptr inputPtr, Ptr outputPtr)
{
SoundConverter sc;
SoundComponentData inputFormat, outputFormat;
unsigned long inputFrames, inputBytes;
unsigned long outputFrames, outputBytes;
void *littleEndianAtomsList;
OSErr err;
inputFormat.flags = 0;
inputFormat.format = k16BitBigEndianFormat;
inputFormat.numChannels = 1;
inputFormat.sampleSize = 16;
inputFormat.sampleRate = rate22050hz;
inputFormat.sampleCount = 0;
inputFormat.buffer = nil;
inputFormat.reserved = 0;
outputFormat.flags = 0;
outputFormat.format = k32BitFormat;
outputFormat.numChannels = 1;
outputFormat.sampleSize = 16;
outputFormat.sampleRate = rate22050hz;
outputFormat.sampleCount = 0;
outputFormat.buffer = nil;
outputFormat.reserved = 0;
err = SoundConverterOpen(&inputFormat, &outputFormat, &sc);
if (err != noErr) return (err);
err = SoundConverterGetBufferSizes(sc, kOurInputBytesTarget,
&inputFrames,&inputBytes, &outputBytes);
if (err != noErr) return (err);
err = CreateAudioAtomsList(k32BitFormat, true,
&littleEndianAtomsList);
if (err != noErr) return (err);
err = SoundConverterSetInfo(sc, siCompressionParams,
littleEndianAtomsList);
if (err != noErr) return (err);
err = SoundConverterBeginConversion(sc);
if (err != noErr) return (err);
err = SoundConverterConvertBuffer(sc, inputPtr, inputFrames,
outputPtr,&outputFrames, &outputBytes);
if (err != noErr) return (err);
err = SoundConverterEndConversion(sc, outputPtr, &outputFrames,
&outputBytes);
if (err != noErr) return (err);
err = SoundConverterClose(sc);
if (err != noErr) return (err);
}
| Previous | Chapter Contents | Chapter Top | Next |